実践 Rust 入門 言語仕様から開発手法まで
#Rust #書籍 #文献
https://m.media-amazon.com/images/I/51t+hDKJOvL.jpg
Amazon で購入 : https://amzn.to/34NeCIY
読書開始 : 2019-11-xx
読書終了 : 2020-05-03
内容メモ nobuoka.icon
はじめに
Python、Ruby、Node.js などのランタイムから FFI (他言語関数インターフェイス) の仕組みで Rust の関数を呼び出せる
徐々に Rust に置き換えていくことも可能
Rust には 「所有権と借用規則」 という概念がある : 性能と安全性を両立するため
1 部 : 基礎編
1 章 : Rust の特徴
Rust ページに記載
2 章 : はじめての Rust プログラム
Rust 環境整備
Rust プロジェクトの始め方
Rustプロジェクトではプラットフォームごとのサポートのレベルを、最もレベルが高い 「Tier 1」 から最も低い 「Tier 3」 までの 3 つの層 (ティア) に分類 : https://forge.rust-lang.org/release/platform-support.html
Rust のエディション
3 章 : クイックツアー
コーディング規約
コードフォーマットのガイドラインを示す 「Rust Style Guide」 : https://doc.rust-lang.org/1.0.0/style/README.html
Rust Style Guideにしたがってコードを自動整形してくれる rustfmt というツール
API 設計の推奨事項をまとめた 「Rust API Guide」 : https://rust-lang.github.io/api-guidelines/about.html
Rust の標準ライブラリの API ドキュメント
Web ブラウザで閲覧できる
ターミナルから rustup doc --std を実行すると、ローカルのツールチェインに含まれているドキュメントが Web ブラウザで開く
Rust 公式のドキュメントサイト () でも同じ内容のドキュメントを閲覧できる
引数にクロージャを取るときはジェネリクスにする必要がある
クロージャの型は個々のクロージャで異なり、2 つとして同じ型がないため (クロージャが自分専用の環境を持つため)
クロージャは文脈によって Fn、FnMut、FnOnce トレイトの一部または全部を自動的に実装する
Rayon クレートは、並列データ処理を簡単かつ安全に実現するためのライブラリ
Rust では、マルチスレッドプログラムにおいてデータ競合が起こらないことをコンパイル時に確認するために 2 つのトレイトを提供
Sync トレイト : このトレイトを実装する型の値については、共有された複数の参照を通じて複数スレッドから並列に扱われても必ずメモリ安全であることを意味する
Send トレイト : このトレイトを実装する型の値については、スレッド間で安全に受け渡しができる
トレイト境界を + で繋げることで、型パラメータに複数のトレイト境界を設定できる
例 : pub fn sort_by<T, F>(x: &mut [T], comparator: &F) -> Result<(), String> where F: Sync + Fn(&T, &T) -> Ordering
4 章 : プリミティブ型
TBD